Color correction based on multiple images

ABSTRACT

In some implementations, a method provides color corrections based on multiple images. In some implementations, a method includes determining one or more characteristics of each of a plurality of source images and determining one or more similarities between the one or more characteristics of different source images. The source images are grouped into one or more groups of one or more target images based on the determined similarities. The method determines and applies one or more color corrections to the one or more target images in at least one of the groups.

RELATED APPLICATIONS

This application is a continuation of and claims priority benefit toU.S. patent application Ser. No. 13/647,594, filed Oct. 9, 2012, all ofwhich is incorporated herein by reference in its entirety.

BACKGROUND

The popularity and convenience of digital cameras as well as thewidespread of use of Internet communications have caused user-producedimages such as photographs to become ubiquitous. For example, users ofInternet platforms and services such as email, bulletin boards, forums,and social networking services post images for themselves and others tosee. Many captured images, however, have a color cast in which thecolors are unbalanced or skewed in undesirable ways due to camerasettings, lighting conditions, or other factors. It may become tediousfor a user to manually examine each image and adjust the colors todesired values if needed. Some applications and devices provide anautomated color correction function in which the colors of an image isanalyzed using particular methods such as a histogram analysis, and thecolors in that image are shifted to provide a more balanceddistribution. However, many existing automated functions are limited intheir ability to correct colors and can often produce incorrect orundesirable changes in the colors of images.

SUMMARY

Implementations of the present application relate to color correction ofmultiple images. In some implementations, a method includes determiningone or more characteristics of each of a plurality of source images anddetermining one or more similarities between the one or morecharacteristics of different source images. The source images aregrouped into one or more groups of one or more target images based onthe determined similarities. The method determines and applies one ormore color corrections to the one or more target images in at least oneof the groups.

Various implementations and examples of the above method are described.The one or more characteristics can include color data derived frompixels of the source images. The source images and the target images caneach include a plurality of pixels, and the color data can be derivedfrom a hue of each pixel in the source images, where the colorcorrections adjust one or more hues of the pixels in the target images.The color data can include a color gamut of values of a color propertyof each of the plurality of source images, and/or a distribution of thevalues of the color property within the color gamut. The one or morecharacteristics include time data derived from the source images andindicating a time of capture of each of the source images. The one ormore characteristics can include at least one of: a time of capture ofeach image, a setting of a camera capturing each image, a distributionof color data in each image, and at least one object depicted in eachimage.

In some implementations of the above method, determining similaritiescan include clustering hue values within each source image to determinea distribution of hue values for each source image, and comparing thedistributions of the source images to find at least one of thesimilarities. Grouping the source images into target images can includedividing the source images into different groups based on thecharacteristics, where each group is its own independent set of targetimages for application of at least one of the color corrections. Thecolor corrections can be different such that a different one of thecolor corrections is applied for each different group of target images.The correction can be applied to multiple target images in a group. Aconfidence in the color correction can be estimated and the colorcorrection can be applied by a magnitude based on the confidence.

Determining the color corrections in the above method can includevarious features, such as examining color data derived from the one ormore target images in one of the groups to determine a color correctionapplied to each target image in that group, and/or identifying an objectin at least one of the target images and accessing reference color dataassociated with the identified object. For example, in someimplementations, the above method can identify an object depicted in atleast one of the one or more target images, where the object isassociated with known correct color data that is obtained as the colordata. Identifying the object can include at least one of: recognizingthe object as a face of a person using a facial recognition technique,recognizing the object using an object recognition technique, andexamining one or more tags associated with the one or more targetimages, wherein the one or more tags identify the object in the image.

A method can include, in some implementations, examining multiple sourceimages to determine one or more characteristics of each of the sourceimages. The source images can each include a plurality of pixels and thecharacteristics can include color data derived from the pixels in theplurality of source images. One or more similarities are determinedbetween the one or more characteristics of different source images,including similarities based on the color data derived from the pixelsin the plurality of source images. The source images are grouped intoone or more groups of one or more target images based on the determinedsimilarities. The method determines an associated color correction forthe one or more target images in each group based on at least part ofthe color data. The method applies the associated color correction tothe one or more target images in each group, including adjusting one ormore color properties of each pixel in the one or more target imagesfrom one or more existing values to one or more adjusted values.

In some implementations, a system can include a storage device and atleast one processor accessing the storage device and operative toperform operations. The operations include determining one or morecharacteristics of each of a plurality of source images, determining oneor more similarities between the characteristics of different sourceimages, grouping the source images into one or more groups of one ormore target images based on the determined similarities; and determiningand applying one or more color corrections to the target images in atleast one of the groups.

In various implementations and examples of the above system, theoperation of determining one or more of the similarities can includeclustering hue values within each source image to determine adistribution of hue values for each source image, and comparing thedistributions of the source images to find at least one of thesimilarities. Different color corrections can be applied for eachdifferent group of target images. The operation of determining the colorcorrections can include examining color data derived from the targetimages in one of the groups to determine a color correction applied toeach target image in that group. The operation of determining andapplying the color correction can include estimating a confidence in thecolor correction and applying the color correction by a magnitude basedon the confidence.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example network environment which may beused for one or more implementations described herein;

FIG. 2 is illustration of an example graphical user interface (GUI)displaying multiple images which can be color-corrected according tosome implementations;

FIG. 3 is a flow diagram illustrating an example method of correctingthe color of images based on multiple images, according to someimplementations;

FIG. 4 is a flow diagram illustrating an example method of determiningand applying color corrections to grouped images, according to someimplementations;

FIG. 5 is a block diagram of an example device which may be used for oneor more implementations described herein.

DETAILED DESCRIPTION

One or more implementations described herein relate to color correctionof images based on multiple images. Various implementations examinecharacteristics of number of source images, such as color data, and findsimilarities in the characteristics. Based on the similarities, a systemgroups the source images into groups of target images and determinescolor corrections to apply to the groups of target images. In someimplementations, the system can examine various types of characteristicsfrom the source images, including color data, timestamps, and identifiedobjects (including recognized faces and people), as the basis forgrouping images for similarity and for determination of a colorcorrection to grouped images. The system can use color data derived frommultiple images and/or one or more reference images to correct colors inthe target images. These and other described features can lead toautomatically-determined, appropriate and high quality color correctionsto images for a user.

The system can perform color correction which can include correction orcolor balancing of a color property, such as hue, of one or more images.The system can examine multiple source images (such as images in analbum or other collection) and determine which of the source images havesimilar characteristics to each other. Some characteristics that can beexamined include color data such as color gamut and hue distributions inthe images. The system can also examine other characteristics such astimestamps describing when the images were captured, and camera settingsat the time of image capture. Some implementations can examinecharacteristics such as identified or recognized content depicted in thesource images.

Based on the similarities, the system can group the source images intoone or more groups of target images that have similar characteristics.In some implementations, the system can determine and apply a differentcolor correction to each group of target images, based on data relatedto the target images. For example, the related data can becharacteristics, such as color data, derived from the target images inthe group, and which is used to determine a color correction to apply toeach of the similar target images in that group. In one example, if ahue distribution in the color data indicates that the hues are tooconcentrated in one color (such as red) in the grouped target images,then the system can determine and apply a color correction to the targetimages which distributes the hues more evenly over all the color range(such as including blue and green hues). Thus, multiple images that areused to determine a color correction can be corrected using that samecolor correction. In other examples, the system can use color data froman associated source, such as a reference image that has recognizedcontent that matches at least one of the target images. A colorcorrection determined for a particular target image can be applied tothe other target images in its group, which are sufficiently similar tothe particular image. In some implementations, the system can estimatehow reliable a determined color correction is, and can apply that colorcorrection with a magnitude based on the estimation. For example, acolor correction based only on color data from two target images may beless reliable than a correction based on 10 images, which may be lessreliable than a correction based on a reference image.

Such features allow automated color correction for images which has ahigher occurrence of desirable corrections. For example, colorcorrection based on multiple image sources allows more accurate andconsistent color corrections of images. Additional sources of color datasuch as from reference images, as well as the use of othercharacteristics such as timestamps over multiple images, further allowsaccurate color correction to images. Features described herein can moreaccurately and satisfactorily correct color in multiple similar images,and require no manual corrections by the user.

FIG. 1 illustrates a block diagram of an example network environment100, which may be used in some implementations described herein. In someimplementations, network environment 100 includes one or more serversystems, such as server system 102 in the example of FIG. 1. Serversystem 102 can communicate with a network 130, for example. Serversystem 102 can include a server device 104 and a social network database106 or other storage device. Network environment 100 also can includeone or more client devices, such as client devices 120, 122, 124, and126, which may communicate with each other via network 130 and serversystem 102. Network 130 can be any type of communication network,including one or more of the Internet, local area networks (LAN),wireless networks, switch or hub connections, etc.

For ease of illustration, FIG. 1 shows one block for server system 102,server device 104, and social network database 106, and shows fourblocks for client devices 120, 122, 124, and 126. Server blocks 102,104, and 106 may represent multiple systems, server devices, and networkdatabases, and the blocks can be provided in different configurationsthan shown. For example, server system 102 can represent multiple serversystems that can communicate with other server systems via the network130. In another example, social network database 106 and/or otherstorage devices can be provided in server system block(s) that areseparate from server device 104 and can communicate with server device104 and other server systems via network 130. Also, there may be anynumber of client devices. Each client device can be any type ofelectronic device, such as a computer system, portable device, cellphone, smart phone, tablet computer, television, TV set top box orentertainment device, personal digital assistant (PDA), media player,game device, etc. In other implementations, network environment 100 maynot have all of the components shown and/or may have other elementsincluding other types of elements instead of, or in addition to, thosedescribed herein.

In various implementations, end-users U1, U2, U3, and U4 may communicatewith each other using respective client devices 120, 122, 124, and 126,and respective to features described herein each user can receivemessages and notifications via a social network service implemented bynetwork system 100. In one example, users U1, U2, U3, and U4 mayinteract with each other via the social network service, whererespective client devices 120, 122, 124, and 126 transmit communicationsand data to one or more server systems such as system 102, and theserver system 102 provides appropriate data to the client devices suchthat each client device can receive shared content uploaded to thesocial network service via the server system 102.

The social network service can include any system allowing users toperform a variety of communications, form links and associations, uploadand post shared content, and/or perform other socially-relatedfunctions. For example, the social network service can allow a user tosend messages to particular or multiple other users, form social linksin the form of associations to other users within the social networksystem, group other users in user lists, friends lists, or other usergroups, post or send content including text, images, video sequences,audio sequences or recordings, or other types of content for access bydesignated sets of users of the social network service, send multimediainformation and other information to other users of the social networkservice, participate in live video, audio, and/or text chat with otherusers of the service, etc. For example, a user can designate one or moreuser groups, such as “friends lists,” family lists, occupation lists,etc., to allow users in the designated user groups to access or receivecontent and other information associated with the user on the socialnetworking service. In some implementations, the access of users to userinformation can be designated in terms of larger groups, such as a“public” setting designating all the users of the social networkservice. As used herein, the term “social networking service” caninclude a software and/or hardware system that facilitates userinteractions, and can include a service implemented on a network system.In some implementations, a “user” can include one or more programs orvirtual entities, as well as persons that interface with the system ornetwork.

A social networking interface, including display of content andcommunications, privacy settings, notifications, and other featuresdescribed herein, can be displayed using software on the client device,such as application software or client software in communication withthe server system. The interface can be displayed on an output device ofthe client device, such as a display screen. For example, in someimplementations the interface can be displayed using a particularstandardized format, such as in a web browser or other application as aweb page provided in Hypertext Markup Language (HTML), Java™,JavaScript, Extensible Markup Language (XML), Extensible StylesheetLanguage Transformation (XSLT), and/or other format.

Other implementations can use other forms of systems and servicesinstead of social networking systems and services. For example, usersaccessing any type of computer network can make use of featuresdescribed herein. Some implementations can provide features describedherein on client or server systems disconnected from or intermittentlyconnected to computer networks.

FIG. 2 is a diagrammatic illustration of an example simplified graphicalinterface (GUI) 200 displaying multiple images which can becolor-corrected according to some implementations described herein. GUI200 can be displayed on a display device, e.g., of a client device 120,122, 124, and/or 126 of FIG. 1, or a server system 102 in someimplementations. In one example, a user can be viewing images on theinterface 200 for a social networking service or application running ina social networking service. Other implementations can display images inan application program, operating system, or other service or system.

In the current example, the system displays images 204 in a display area206 of the interface 200. The images 204 can be stored on one or morestorage devices accessible to the interface and/or social networkservice, such as on the social network database 106. For example, theuser may have uploaded the images 204 to the social networking service,or otherwise provided the images for his or her account. In the exampleof FIG. 2, the images 204 are digital images, such as digitalphotographs taken by a camera, and stored in an album called Album 1 ofthe user Dan V. Various images in collections such as albums, or spreadamong other collections and storage devices, can all be processed by thefeatures described herein.

In the example of FIG. 2, the images 204 have been analyzed by thesystem (which can be the social networking service, one or more serversystems, and/or one or more client devices in various embodiments) usingfeatures described herein. Such features can include the systemexamining the images 204 to determine one or more characteristics thatare similar between the images. For example, the system can examinecolor data including color gamut and/or hue distributions of the imagesto determine which images have similar gamuts and hue distributions. Inthis example, the system may find that images 206 and 208 have similarhue distributions, since they largely depict the same types of flowerswith the same or similar colors. Similarly, the system may find thatimages 210, 212, 214, and 216 may have similar hue distributions sincethey depict similar outdoor areas. Further, images 218 and 220 may beanalyzed to have some similar hue distributions, e.g., with similarbackground sky colors.

The system can also examine the images 204 to determine othercharacteristics of the images that may be similar. For example, thetimestamps of the images can be examined to determine a date and timewhen the images were captured. In this example, the system may find thatimages 206 and 208 were captured within an hour of each other on thesame date, images 210, 212, 214, and 216 all have timestamps within twohours of each other on the same date. Images 218 and 220 may havetimestamps within minutes of each other on the same date. Image 222 maynot have a timestamp within months of any of the other images 204 thatwere examined. Other characteristics of the images can also be examined,such as metadata embedded in an image describing settings orspecifications of the camera that took that image. Some implementationscan examine characteristics such as identified or recognized contentdepicted within the image, such as facial recognition of faces ofpeople, other object recognition for other types of objects or features(such as landmarks, items, etc.), or identification by using identifierssuch as tags associated with the image and including descriptiveinformation input by a user. For example, the system may be able torecognize flower objects in images 206 and 208, and/or a flag object inthe image 218.

The system can group the images 204 into one or more groups based on anysimilar characteristics found. For example, the system can group theimages 206 and 208 into a first group, images 210, 212, 214, and 216into a second group, and images 218 an 220 into a third group, based onat least some of the characteristics being similar as mentioned above.In some implementations, image 222 can be provided in a group in whichit is the only image, if it does not have sufficiently similarcharacteristics to the other examined images. Other groups of images canbe formed in other implementations or variations, based on variouscriteria as described herein.

The system can determine a color correction for the images in eachgroup, based on related data such as the characteristics of the imagesin the group, and/or related data from other images or sources. In oneexample, the system may determine a color correction to the images 206and 208 in the first group based on an average of the hue distributionsof those images, if the hue distributions are found to be unbalanced. Insome implementations, that color correction can also be influenced byother data such as other characteristics of those two images,characteristics of other images 204 (such as timestamps), orcharacteristics of other images or data outside images 204. In anexample, a color correction to images 218 and 220 may be influenced by areference image that is associated with image 218 based on theidentified flag object in image 218. For example, an image storedoutside of images 204 having a matching or similar recognized flagobject may have been found and accessed by the system, and its colorsobtained as reference colors on which to base the color correction ofimages 218 and 220.

Some implementations can estimate a confidence level of the correctionto apply to a group of images. The confidence level can be based on thereliability or accuracy of the factors used in determining the colorcorrection, where some factors (such as reference images) can beweighted more than other factors (such as color distribution) used todetermine the correction. Some determined corrections may not haveenough confidence to be applied at all, such as, in one example, acolor-data correction based on a single image such as image 222 that hasa less-extreme color distribution.

The system can apply the determined color corrections to the images. Insome implementations, a color correction can be applied to each image inthe group for which the correction was determined. In one example forFIG. 2, the corrected images can be displayed in place of their originalimages in interface 200, if those images are currently being displayed.In other implementations, the original and corrected images can both bedisplayed to the user so as to allow a user to compare the images and toconfirm or discard the applied correction.

In contrast, previous implementations of automatic color correction orwhitebalancing can often produce undesirable changes in images since thesystem may only look at color data from the single image to becorrected. This typically does not provide enough information about howto correct the image. For example, the system would not know theconditions under which the image was taken, nor the colors intended ordesired by the providing user. By using multiple images for sources ofcolor data, other characteristics, and related data, features describedherein can more accurately correct color in one or more images.

FIG. 3 is a flow diagram illustrating one example of a method 300 ofcorrecting the color of images based on multiple images. In someimplementations, method 300 can be implemented, for example, on a serversystem 102 as shown in FIG. 1. In described examples, the server systemincludes one or more processors or processing circuitry, and one or morestorage devices such as a database 106. In some implementations,different components of a server and/or different servers can performdifferent blocks or other parts of the method 300. In otherimplementations, some or all of the method 300 can be implemented on oneor more client devices. Method 300 can be implemented by programinstructions or code, which can be implemented by one or moreprocessors, such as microprocessors or other processing circuitry andcan be stored on a computer readable medium, such as a magnetic,optical, electromagnetic, or semiconductor storage medium, includingsemiconductor or solid state memory, magnetic tape, a removable computerdiskette, a random access memory (RAM), a read-only memory (ROM), flashmemory, a rigid magnetic disk, an optical disk, a solid-state memorydrive, etc. Alternatively, these methods can be implemented in hardware(logic gates, etc.), or in a combination of hardware and software. Themethod 300 can be performed as part of or component of an applicationrunning on the client device, or as a separate application or softwarerunning in conjunction with other applications and operating system.

The method 300 can be initiated by a user, such as a user providing orhaving access to source images. A user may, for example, have selectedthe initiation of the method 300 from an interface such as a socialnetworking interface or other graphical interface. In someimplementations, the method 300 can be initiated automatically by thesystem, such as being periodically performed or performed based on aparticular event, such as one or more images being newly uploaded to oraccessible by the system, or a condition specified in custom preferencesof one or more users.

In block 302 of method 300, the method examines multiple source images.In some embodiments, at least one of these source images may need colorcorrection. For example, multiple ones or all of the source images canneed or be receptive to color correction in some examples describedherein. These images can be digital images composed of multiple pixels,for example, and can be stored on one or more storage devices of thesystem, or otherwise accessible to the system. For example, the sourceimages can be stored on a single storage device or across multiplestorage devices. In some implementations, the source images can becollected in an album or other collection associated with a particularuser of the system, such as an album provided in an account of a user ofa social networking system as in the example of FIG. 2. In someexamples, the source images can be one or more images from multiplealbums or other collections, and/or one or more images associated withmultiple users.

The multiple source images can be examined by the system in response tovarious types of events or conditions. For example, in someimplementations, the system can obtain the multiple source images byreceiving user input that designates the source images, such asselections of images made by a user in a graphical user interface. Inone example, the user can select the multiple images by selecting analbum folder or icon, thereby selecting all images within that selectedalbum. In some implementations, the system can designate which multiplesource images to examine. For example, the system can scan all contentor albums of one or more users and examine, retrieve, and/or store oneor more images of the content or albums as source images. In someimplementations, the system can examine only new images as sourceimages, which can be images that have not been examined by method 300since the last time that method 300 was performed by the system.

Some implementations can cause the method 300 to select particularimages as source images based on predetermined conditions, such as whois the user providing the images, the creation or capture dates of theimages, the dates that the images were first stored on the system, etc.In some implementations, the system can determine which images are to beused as source images by evaluating characteristics of images. Forexample, the system can examine characteristics such as the colordistributions of images, timestamps and other metadata of images, and/oridentified content depicted in the images, as described below, anddetermine the source images to use similarly as described below fordetermining groups of target images.

In some implementations, the source images can include reference imageshaving reference characteristics. For example, particular images may beknown to have been color-corrected previously and thus can be used asreference images that include reference color data. Reference color datamay be able to be used in the color correction of other source images inthe method 300, as described in greater detail below. In someimplementations, reference images and/or reference data can also bestored outside of or external to the source images.

In block 304, the method determines one or more characteristics derivedfrom the source images. The characteristics can be a variety of types.For example, color data characteristics can be determined for each imagebased on color data obtained from each image. In some implementations,the color data can include hues, and the method can determine a colorgamut (e.g., a complete set or range of colors found within an image) ofhues by examining the entire range of hue values of the pixels of theimage. The method can also determine the distribution of hues in thatimage by, for example, examining the hues in each pixel of the image andperforming a clustering technique (or other technique) for each image.The distribution can indicate which hues are the dominant ormost-occurring hues in each image. In some examples, K-means clusteringcan be used to cluster hues and determine the dominant hues in an image,by taking each pixel, convert it from RGB values to an HSV (hue,saturation, value) color space, and construct a histogram across thehues to determine which bins in the histogram have the highest number ofcounts. Some such techniques can use clusters that vary and are adaptivein size, allowing, for example, discrimination of different shades ofcolors in the distribution. Many variations of clustering techniques orother techniques can be used to determine color distributions of eachimage in various implementations.

Other types of color data (e.g., other hue properties and/or other colorproperties) or other visual characteristics can also be determined fromthe source images in various implementations. For example, average huesin each image can be determined. In some implementations, a brightnesscharacteristic of each source image can be determined. For example, thebrightness of each pixel can be obtained from each image and provided ina distribution to determine an overall brightness of the image. Othertypes of color data to be determined can include a color saturation orother color properties.

Other types of characteristic that can be derived from the source imagesinclude metadata characteristics. For example, one such characteristicis a timestamp associated with each of one or more of the source images.The timestamp can indicate the date and/or time that the associatedimage was captured by a camera or other device. For example, somecameras automatically associate or embed a timestamp with each imagecaptured and stored the timestamp information with the image asmetadata. Other types of metadata can also be embedded in the sourceimages and obtained and determined as characteristics in block 304. Forexample, some cameras embed metadata in each image file which includesdata describing the identity of the camera taking the image (e.g., make,model, year, etc.), the lens type used, ISO speed used for the image,and/or the color settings, whitebalance settings, and/or other settingsof the camera that were used to capture the image, any or all of whichcan be determined as characteristics in block 304. In someimplementations, metadata stored with images according to theExchangeable Image File format (Exif) can be determined as imagecharacteristics.

In some implementations, identified content depicted in the images canbe obtained as a characteristic. For example, object identificationtechniques can be used to recognize common objects depicted in an image.Some object identification techniques include facial recognitiontechniques which can recognize a face in an image. For example, in asocial networking service, a recognized face can be compared to faces ofusers of the service to identify which people depicted in images arealso users of the service. Some images can be associated withidentifiers such as tags that describe content depicted in the image,and these tags can be obtained or parsed as identifications of depictedcontent.

In block 306, the method determines one or more similarities between thecharacteristics of the different source images, e.g., which sourceimages have similar characteristics to each other. In someimplementations, one or more corresponding types of imagecharacteristics determined in block 304 can be compared to determineimage similarity. For example, the color gamuts can be compared, and/orthe color distribution can be compared in different source images forsimilarity. In some implementations, hues of each source image can beclustered, and each clustered distribution can be examined to determinewhich colors dominate. The color distributions of two images can beconsidered similar if the dominant hues are within a predetermined rangeor percentage of each other. In one example, the method can determinethat the hues of red dominate in some source images, and no other huesdominate. These distributions can be considered similar if within apredetermined range of each other. Some source images may have colordistributions with dominant red hues but also some clusters around blueand/or green hues. Such distributions can be considered similar if eachof the hue clusters is within predetermined ranges or percentages ofeach other. The gamut characteristics from the source images cansimilarly be compared with each other, where gamuts within a particularrange or percentage of each other can be considered similar.

The method can also examine other characteristics to determinesimilarity of those characteristics in between different source images.In some implementations, timestamps and/or other metadatacharacteristics can be examined for similarity. For example, if acharacteristic matches or is within a predetermined range in two or moreimages, that characteristic can be considered similar in those images.In some examples, timestamp characteristics within a predeterminedamount of time of each other, such as one hour, can be consideredsimilar, or can produce a sliding or variable scale of similarity basedon the closeness of their timestamps. Some characteristics such ascamera model or lens type can be considered similar only if they areexact matches, or in other implementations different characteristics canbe considered similar if those characteristics are correlated in apredetermined information source such as a lookup table accessible tothe method 300.

In some implementations, identified content depicted in the images canbe compared to find similarity. Thus, in some implementations, if twosource images have the same or similar identified content, such as thesame general category of people, objects, landmarks or landscapefeatures, etc., or more specifically-identified instances of thiscontent (such as identified users, specific models of products, etc.),these characteristics can be considered similar.

In block 308, the method groups the source images into one or moregroups as target images that have similar characteristics. In someimplementations, source images that are considered to be sufficientlysimilar are designated as target images within the same group. Themethod can use any of various ways in determining that two or moresource images are sufficiently similar so as to form a group. In someimplementations, the method can examine a particular characteristic issimilar, such as the color gamut and/or distribution as described above,and group source images based on the similarity of that particularcharacteristic. Some implementations can examine multiple particularcharacteristics to determine similarity for grouping. In a particularexample, the method can collect source images together into a group ifthose source images have a similar color gamut and distribution as wellas a similar timestamp. In some implementations, the morecharacteristics that match between two images, the more similar thoseimages are considered, on a variable scale. Some implementations can usea similarity threshold to determine whether to group the source images.For example, images that have at least a predetermined number of similarcharacteristics can be considered sufficiently similar to be grouped. Insome implementations, particular characteristics can be prioritized overother characteristics for grouping according to their similarities,and/or different types of characteristics can be assigned differentpriority levels in a priority scale. In one nonlimiting exampleimplementation, a color data characteristic can be assigned to have thehighest priority when looking for similarities to determine how imagesare to be grouped, while other characteristics can be assigneddifferent, lower priorities.

In some implementations, the method can determine multiple groups oftarget images in block 308 by finding different sets of source imageshaving similar characteristics. For example, three source images mayhave the same or similar color data (e.g., gamut and distributions) andtimestamps and so would be grouped into a first group of target images,and five other source images may have color data and timestamps similarto each other but different from the source images in the first group,and are grouped into a second group of target images. All of the sourceimages can be grouped into one or more groups in some implementations,where one or more of the groups may each have only one target image ifother images having sufficient similarity to that target image were notfound in the source images. In some implementations, a particular sourceimage is allowed to be in only one group at a time. Some implementationscan treat each group as its own independent set of target images forapplication of at least one color correction to the target images.

Some implementations can allow other data to influence the grouping ofthe source images into different groups. For example, if the system haspreviously analyzed and grouped the source images in a previousiteration of the method 300, and the color correction was found to beunsuccessful or unsatisfying to the user or to objective criteria, thenthe system can group the source images in a different way in thisiteration that is different than one or more previous iterations. Insome implementations, user input or stored preferences can influence howthe images are grouped in block 308. For example, one particular usermay prefer to prioritize the color data characteristic similarities morethan other similarities when deciding which images to group, while adifferent user may prefer to prioritize similarities in a differentcharacteristic such as timestamps over other characteristics. Or, aparticular user may set a minimum number of images that must be foundsimilar to each other for a group of them to be formed and for colorcorrection to be performed on those images.

In block 310, the method determines and applies a different colorcorrection to each group of target images based on related data. Forexample, the related data can include the characteristics determined inblock 304, as well as any other accessible data relating to the targetimages, such as data from other source images, reference images, etc.Some examples of implementing block 310 are described in greater detailbelow with respect to FIG. 4. After block 310 is completed, groupedtarget images have been color-corrected and the method ends. If one ormore of the corrected target images was being displayed by the system,the color correction can be applied so as to update the display of thoseimages.

In some embodiments, the system can prompt user approval. For example,the source images including any corrected versions can be displayed in agraphical interface to the user for review, and the user can select anycorrected images which the user does not approve of the correction, suchthat the correction is discarded. Some embodiments can display theoriginal, uncorrected images as well so that the user can compareoriginal and corrected images.

Thus, described features allow characteristics of multiple images to beused to group those images into different groups in which the same colorcorrection can be applied to multiple images in each group. Thecharacteristics of the multiple grouped images can be used to determinethe color correction to be applied to those images, allowing moreaccurate and satisfactory color correction of images since thecorrection is based on characteristics obtained from multiple images.Furthermore, the color correction can efficiently correct multiplesimilar images with a determined color correction.

FIG. 4 is a flow diagram illustrating an example method 400 for block310 of FIG. 3, in which the method determines and applies one or morecolor corrections to grouped target images, according to someimplementations. Method 400 can be implemented on one or more systemssimilarly as described above for method 300 of FIG. 3.

In block 402, the method selects a group of target images to correct.This group is a number of the source images that have been grouped asbeing sufficiently similar to receive the same color correction, asdescribed above with reference to FIG. 3. In some implementations, theremay be multiple groups having different target images, where each groupincludes one or more target images that are similar to each other andare intended for a particular color correction.

In block 404, the method determines a color correction for the selectedgroup of target images based on related data. In some implementations,this can be a color balancing of the target images. The related data caninclude characteristics of the target images, and/or data derived fromother source images and/or reference images or color data. For example,the correction can be determined based on characteristics such as imagecharacteristics of the target images and/or source images, such as theexample characteristics described above with reference to FIG. 3.

In some implementations, one characteristic used in determining thecolor correction can be color data derived from the target images, suchas the color gamut and distribution data determined above in block 304of FIG. 3. The color gamut data can indicate the total range of colorsexisting in a target image, and whether the range is narrowly focussedon a few hues or more balanced and spread over many different hues. Thecolor distribution data can include clusters of hues of a target image,indicating which particular hues dominate in those images. The gamutsand distributions from each target image in the selected group can becombined to obtain an overall gamut and overall distribution for all thetarget images in the group. For example, the individual gamuts can beaveraged to obtain an overall gamut, and individual distributions can beaveraged to obtain the overall distribution.

From color data such as the gamut and distribution of color propertiesfrom the target images in the selected group, such as the averaged huedistribution and gamut described above, the method can infer a referencewhite point and can determine a color correction that should be appliedto color balance the images using one or more color correctiontechniques. For example, inferring a white point from a given huedistribution and gamut can be performed using any of known techniques.In some implementations, the color correction techniques can include oneor more hue shifting or tinting techniques in which existing hue valuesare shifted to desired hue values. Furthermore, the color data such asthe gamut and distribution of hues can indicate a magnitude of thecorrection. Typically, a large gamut and a balanced distribution of huesover different hues indicates an image that has at least partiallycorrect colors. For example, hues of red may dominate in the targetimages of the selected group with few or no clusters of hues in theother values such as blue or green, as indicated in a clustereddistribution. Such a distribution can indicate that those target imagesmay have a reddish cast to them. A color correction can be determined tobalance the color distribution into the other non-red hues. In anotherexample, the distribution may show that the target images have red huedomination but also some clusters around blue and/or green hues in theirdistributions, indicating a more balanced color distribution may existin those target images. Thus, a color correction of lesser magnitude canbe determined to only slightly balance the hues from red into the otherhues.

In some implementations, reference colors and/or data can be used indetermining the color correction. For example, one or more of the targetimages in the selected group may be known to have been previously colorcorrected. In one example, a particular user who is associated with thesource images may have color-corrected one or more of the source imagespreviously, using manual color correction techniques or a differentcolor correcting method. In some implementations, this corrected statuscan be determined, for example, by examining a history of actions withinan environment (such as data describing actions in an account orapplication program in a social networking service), and/or this historycan be stored as data associated with the source images. In someimplementations, each source image can include a flag or other dataindicating that it has previously been color corrected with featuresdescribed herein and/or with other methods or techniques.

If any of the target images has been previously color corrected, thenthose images can be used as a reference for the other images in theselected group. For example, in some implementations one or morecolor-corrected images may be included in the group with uncorrectedimages because it has similarities in characteristics such astimestamps. The corrected colors in the corrected image can be used tocorrect equivalent colors in the uncorrected images in the same group.

In some implementations, other reference color data can be available foruse in determining the color correction. For example, content depictedin the target images can be identified as a similar characteristic ofthe target images, where the same or similar content is depicted in eachimage in the selected group. The identified content can be used to findone or more other images having that same content which can be used asreference images. These reference images may not be included in theselected group of target images, and/or may not be included in the setof source images. For example, the reference images may includereference colors that can be used to correct the colors in the targetimages. In some implementations, such reference images can be found bymatching the identified content to content identified in the referenceimages. In one example, object recognition techniques, including facialrecognition techniques, may have identified a particular user of asoftware system such as a social networking service, who is depicted inthe target images of the selected group. This identification of the usercan be used to match one or more other images known to depict that sameuser. These other images may be known to be color corrected, or in othercases may not be known to be corrected, but which can still be used asreference images. The color values from such images can also be combinedand/or averaged, increasing their value as references even if notprevious color corrected. Thus the colors of the reference images can beused as reference colors to determine the correction for the targetimages in the selected group that depict that same user. In someimplementations, the identification of content can allow the system toidentify reference color data that is not associated with any particularreference image, but is a color profile or other set of data storedindependently. For example, an identified user or an identifiedwell-known logo or product depicted in the target images can cause thesystem to reference a particular color profile associated with each ofthose identified objects, thus gaining access directly to referencecolors used to determine a color correction for the selected group oftarget images.

In some implementations, other characteristics can be used to influencethe determination of the color correction. For example, the timestamps,lens type of camera capturing the target images, or other metadata ofthe images, and/or content identified in the images, can influence thedetermined color correction. In some implementations, such othercharacteristics can be used to find matching reference images orreference data as described herein. In some examples, suchcharacteristics can be used to indicate the most likely correction thatshould be used to satisfactorily correct the color, such as timestampsthat indicate a particular time of day and environmental lightingconditions in an outdoor area, and/or indicate a time in a calendarseason indicating typical or likely ambient outdoor conditions (lesslight in fall or winter, wet vs. dry conditions, etc.). Or, acharacteristic may indicate the type of camera lens used for the imageand known to capture particular color defects which can be corrected.

Some implementations can examine characteristics derived from one ormore of the source images that were not in the selected group with thetarget images. For example, timestamps of all the source images can beexamined to determine a pattern of light conditions over all the sourceimages corresponding to the time of day of image capture. This analysiscan help determine a particular color correction for the target imagesin the selected group based on the timestamps of those target images,e.g., if they are late in the day, the color correction can assumedarker environmental conditions during the capture of the target images.Other source images can confirm or make more certain particularassumptions made about the target images, such as the settings of thecamera taking the target images and other source images.

Some implementations can determine a different color correction for atleast one, or each, target image in the selected group. For example, adetermined color correction may need to be varied to take into accountparticular differences in each target image in the group. In someexamples, the system can analyze variances in characteristics withintarget images of the selected group (and/or in other source images orreference images) to determine the color correction. In one example, thetarget images in the selected group may have different ambient lightconditions or brightnesses corresponding to timestamps showing differenttimes of a day. The hues or brightnesses of each image can be comparedto its timestamp to determine a particular magnitude of the colorcorrection for that image, where a timestamp indicating an evening timeof image capture causes a larger brightness and/or hue shade correctionthan a timestamp indicating an earlier time of image capture. Othercharacteristics can indicate variations of the color correction to beapplied among one or more of the target images.

In block 406, the method estimates a confidence level in the correctiondetermined in block 404. The confidence level can indicate theprobability that the determined correction will correct the colors ofthe target images in the selected group in a satisfactory or preferredway (e.g., satisfactory or preferred to a user providing the targetimages, or to general persons in various implementations). Thisconfidence level can be determined based on the accuracy and/orreliability of various factors that were used to determine thecorrection in block 404, such as the types of image characteristics andother data. In some implementations, each type of factor can be assigneda particular confidence level, and if multiple types of factors wereused to determine the correction in block 404, the individual confidencelevels of the factors can be summed to obtain an overall confidencelevel for the correction.

In some implementations, probabilistic inference techniques can be usedto estimate the confidence level (and/or, conversely, the uncertainty)of the determined correction. For example, a probabilistic inferencetechnique can estimate a confidence level based on multiple factors usedin the correction determination. These factors can include a quality ofthe overall distribution of hues in the target images, where an overalldistribution having one prominent hue and little or no other huesindicates that a correction based on rebalancing those hues is morecertain to correct the color than a distribution in which the hues aremore spread out or partially balanced. The factors can also include thenumber of target images in the group and used to determine thedistribution (or otherwise determine the correction), where the moretarget images were used to determine the average gamut and/ordistribution used in the correction, the greater the certainty that thecorrection will be satisfactory. The factors can also include whetherone or more reference images or reference color data was used in thedetermination of the correction, where each reference used increases theconfidence of the correction.

The factors can also include other characteristics of target images inthe group that match or are similar, where each such match or similaritycan increase the confidence level. For example, there may be some groupsin which the target images were grouped based on one characteristic,such as the color data of the images, and other characteristics were nota basis of the grouping. In such groups, those other characteristics canbe examined to determine the confidence of the correction. For example,each timestamp of the target images that is close to (e.g., within apredetermined time range of) a timestamp of a different one of thetarget images in the group can increase the confidence level of thecorrection, since it indicates environmental and lighting conditionsunder which the images were captured were likely similar. In someimplementations, the factors used in the confidence estimation can beany of the factors described previously which can be used fordetermining the color correction, such as any characteristics of thetarget images, other source images, and/or other reference images ordata.

Some implementations can assign different weights or magnitudes to thedifferent factors used in determining confidence level, based on thereliability of those factors. For example, determining a colorcorrection based on a hue distribution averaged over two images may haveless reliability than a correction based on hue distribution over 10similar images. Furthermore, the two-image distribution may be lessextreme, showing a small balance in hues, while the 10-imagedistribution may be more extreme, showing one dominant hue and much lessbalance. Thus, the 10-image hue distribution factor can be weighted morethan the two-image factor. The 10-image factor may be less reliable thana factor based on reference color data such as from apreviously-corrected image, reference image, or other source, whichtypically is very reliable in correcting colors of images. Thus, thereference color factor can be weighted more than the 10-image factor inthe confidence level determination.

In block 408, the method determines a magnitude (or strength) of thedetermined correction to apply to the target images based on theestimated confidence level and any other applicable data. In someimplementations, the higher the confidence level, the higher themagnitude is set for the correction, since the greater confidence allowsthe system to be more bold with corrections. However, if the confidencelevel of the correction is low, then it is more uncertain whether thedetermined correction will change the image satisfactorily, and so thecorrection can be applied more lightly to be more conservative. In someimplementations, a confidence level that is below a predeterminedthreshold level can result in the method applying no color correction atall to the target images, e.g., at zero magnitude.

In block 410, the determined correction is applied at the determinedmagnitude to each of the target images in the selected group. In someimplementations, the method can perform a transformation on the targetimages. For example, the RGB values can be converted to HSV values,where the hues can be interpolated to derive new hues. For example, thesystem can examine the difference between the hues of the current targetimage and the desired hues that the method wishes to achieve in thatimage, to determine a hue delta for the image as a whole. The hues arethen adjusted by the delta. In some implementations as described above,variations of the color correction can be applied to different targetimages in the selected group based on particular conditions andcharacteristics examined.

In block 412, the method checks whether there is another group of targetimages to color-correct using method 400. If so, then the method returnsto block 402 to select another group of target images. If there are nofurther groups of target images to correct, then the process iscomplete. In some implementations, the corrected images can be displayedon a display device, such as in a graphical interface as in FIG. 2 ifapplicable. In some implementations, the corrected images can bedisplayed in place of their former original versions.

Some implementations can prompt the user to confirm each corrected imageor all of the corrected images together, before the corrected images arecaused to replace the original versions (or copies of the originalversions can be stored separately). For example, the original andcorrected versions of the images can be displayed simultaneously to auser so that the user can easily compare original and correctedversions.

In some cases, a color correction may not be applied to grouped targetimages. For example, the confidence level for a group may be too low, ora user may reject the correction(s). In some implementations, if a colorcorrection is not applied to certain images when performing methods 300and 400, the method can perform methods 300 and 400 again in an attemptto correct the colors of those images in a different way. For example,the method can form new and different groups of target images from thesource images and determine different color corrections based on thosenew groups. In one example, the method can set priorities differentlyfor image characteristics and/or examine additional or differentcharacteristics that were not examined in the previous iteration, andcan group one or more of the source images according to differentsimilar characteristics to determine a different color correction basedon the differently-grouped target images.

Other variations can be used in other implementations of the describedfeatures. For example, some implementations can correct other colorproperties of an image besides the color cast or color balance. Someimplementations of the described features can correct different imageproperties such as brightness, contrast, clarity, or sharpness.

It should be noted that the blocks described in the methods of FIGS. 3and 4 can be performed in a different order than shown and/orsimultaneously (partially or completely) with other blocks, whereappropriate. In some implementations, blocks can occur multiple times,in a different order, and/or at different times in the methods. In someimplementations, methods 300 and/or 400 can be implemented, for example,on a server system 102 as shown in FIG. 1. In some implementations, oneor more client devices can perform one or more blocks instead of or inaddition to a server system performing those blocks.

FIG. 5 is a block diagram of an example device 500 which may be used toimplement some implementations described herein. In one example, device500 may be used to implement server device 104 of FIG. 1, and performappropriate method implementations described herein. Server device 500can be any suitable computer system, server, or other electronic orhardware device. For example, the server device 500 can be a mainframecomputer, desktop computer, workstation, portable computer, orelectronic device (portable device, cell phone, smart phone, tabletcomputer, television, TV set top box, personal digital assistant (PDA),media player, game device, etc.). In some implementations, server device500 includes a processor 502, a memory 504, and input/output (I/O)interface 506.

Processor 502 can be one or more processors or processing circuits toexecute program code and control basic operations of the device 500. A“processor” includes any suitable hardware and/or software system,mechanism or component that processes data, signals or otherinformation. A processor may include a system with a general-purposecentral processing unit (CPU), multiple processing units, dedicatedcircuitry for achieving functionality, or other systems. Processing neednot be limited to a particular geographic location, or have temporallimitations. For example, a processor may perform its functions in“real-time,” “offline,” in a “batch mode,” etc. Portions of processingmay be performed at different times and at different locations, bydifferent (or the same) processing systems. A computer may be anyprocessor in communication with a memory.

Memory 504 is typically provided in device 500 for access by theprocessor 502, and may be any suitable processor-readable storagemedium, such as random access memory (RAM), read-only memory (ROM),Electrical Erasable Read-only Memory (EEPROM), Flash memory, etc.,suitable for storing instructions for execution by the processor, andlocated separate from processor 502 and/or integrated therewith. Memory504 can store software operating on the server device 500 by theprocessor 502, including an operating system 508 and a social networkingengine 510 (and/or other applications) in some implementations. In someimplementations, the social networking engine 510 or other applicationengine can include instructions that enable processor 502 to perform thefunctions described herein, e.g., some or all of the methods of FIGS. 3and/or 4. Any of software in memory 504 can alternatively be stored onany other suitable storage location or computer-readable medium. Inaddition, memory 504 (and/or other connected storage device(s)) canstore privacy settings, content, and other data used in the featuresdescribed herein. Memory 504 and any other type of storage (magneticdisk, optical disk, magnetic tape, or other tangible media) can beconsidered “storage devices.”

I/O interface 506 can provide functions to enable interfacing the serverdevice 500 with other systems and devices. For example, networkcommunication devices, storage devices such as memory and/or database106, and input/output devices can communicate via interface 506. In someimplementations, the I/O interface can connect to interface devices suchas input devices (keyboard, pointing device, touchscreen, microphone,camera, scanner, etc.) and output devices (display device, speakerdevices, printer, motor, etc.).

For ease of illustration, FIG. 5 shows one block for each of processor502, memory 504, I/O interface 506, and software blocks 508 and 510.These blocks may represent one or more processors or processingcircuitries, operating systems, memories, I/O interfaces, applications,and/or software modules. In other implementations, server device 500 maynot have all of the components shown and/or may have other elementsincluding other types of elements instead of, or in addition to, thoseshown herein. While system 102 is described as performing steps asdescribed in some implementations herein, any suitable component orcombination of components of system 102 or similar system, or anysuitable processor or processors associated with such a system, mayperform the steps described.

A client device can also implement and/or be used with featuresdescribed herein, such as client devices 120-126 shown in FIG. 1.Example client devices can include some similar components as the device500, such as processor(s) 502, memory 504, and I/O interface 506. Anoperating system, software and applications suitable for the clientdevice can be provided in memory and used by the processor, such asclient group communication application software. The I/O interface for aclient device can be connected to network communication devices, as wellas to input and output devices such as a microphone for capturing sound,a camera for capturing images or video, audio speaker devices foroutputting sound, a display device for outputting images or video, orother output devices. A display device, for example, can be used todisplay the settings, notifications, and permissions as describedherein, where such device can include any suitable display device suchas an LCD, LED, or plasma display screen, CRT, television, monitor,touchscreen, 3-D display screen, or other visual display device. Someimplementations can provide an audio output device, such as voice outputor synthesis that speaks text in ad/or describing the settings,notifications, and permissions.

Although the description has been described with respect to particularimplementations thereof, these particular implementations are merelyillustrative, and not restrictive. Concepts illustrated in the examplesmay be applied to other examples and implementations.

Note that the functional blocks, features, methods, devices, and systemsdescribed in the present disclosure may be integrated or divided intodifferent combinations of systems, devices, and functional blocks aswould be known to those skilled in the art. Any suitable programminglanguage and programming techniques may be used to implement theroutines of particular implementations. Different programming techniquesmay be employed such as procedural or object-oriented. The routines mayexecute on a single processing device or multiple processors. Althoughthe steps, operations, or computations may be presented in a specificorder, the order may be changed in different particular implementations.In some implementations, multiple steps or blocks shown as sequential inthis specification may be performed at the same time.

1.-3. (canceled)
 4. A computer-implemented method to correct image color, the method comprising: obtaining a plurality of images having one or more similarities in one or more characteristics of the plurality of images; determining, using a hardware processor, one or more color corrections for the plurality of images; estimating one or more confidence levels associated with the one or more color corrections; and applying the one or more color corrections to the plurality of images with a magnitude based on the associated one or more confidence levels.
 5. The method of claim 1 wherein the one or more confidence levels are based on at least one of: the one or more characteristics of the plurality of images; and the one or more similarities in the one or more characteristics of the plurality of images.
 6. The method of claim 1 wherein the one or more confidence levels are based at least in part on the number of images in the plurality of images.
 7. The method of claim 1 wherein the one or more confidence levels are based on a plurality of factors used to determine the one or more color corrections, wherein one or more of the plurality of factors are weighted more than one or more other factors of the plurality of factors in the estimation of the one or more confidence levels.
 8. The method of claim 7 wherein the plurality of factors used to determine the one or more color corrections include at least one of: one or more hue distributions in the plurality of images; and one or more reference colors obtained from one or more reference images associated with one or more of the plurality of images.
 9. The method of claim 1 wherein estimating the one or more confidence levels includes estimating the one or more confidence levels based on a plurality of factors used to determine the one or more color corrections, including assigning each factor an individual confidence level and summing the individual confidence levels of the factors to obtain an overall confidence level for the one or more color corrections.
 10. The method of claim 1 wherein the one or more confidence levels are based at least in part on timestamps of the plurality of images being within a predetermined time range of each other.
 11. The method of claim 1 wherein the one or more characteristics include color data derived from hues of pixels of the source images, wherein the one or more color corrections adjust one or more hues of the pixels in the one or more target images.
 12. The method of claim 1 wherein the one or more characteristics includes at least one of: a time of capture of each image, a setting of a camera capturing each image, a distribution of color data in each image, and at least one object depicted in each image.
 13. The method of claim 1 wherein the color correction is based on a hue distribution averaged over the plurality of images, and wherein the estimated confidence level is based at least in part on the number of images over which the hue distribution is averaged.
 14. The method of claim 1 further comprising: determining one or more characteristics of each of multiple source images, wherein the plurality of images are included in the multiple source images; determining the one or more similarities between the one or more characteristics of the plurality of images; and grouping the plurality of images into a group, wherein the group is different than one or more other groups of other images of the multiple source images.
 15. The method of claim 1 further comprising: determining that at least one of the one or more color corrections does not affect at least one of the plurality of images; determining one or more different color corrections for the at least one of the plurality of images; and repeating the estimating and applying using the one or more different color corrections for the at least one of the plurality of images.
 16. The method of claim 15 wherein determining that at least one of the one or more color corrections does not affect at least one of the plurality of images is based on at least one of: the one or more confidence levels associated with the at least one of the one or more color corrections; and input from a user rejecting the at least one of the one or more color corrections.
 17. The method of claim 1 wherein the one or more color corrections correct at least one color property of the plurality of images, the at least one color property including at least one of: color balance, brightness, contrast, and sharpness.
 18. A system to correct image color, the system comprising: a storage device; and at least one processor operative to access the storage device and configured to: obtain a plurality of images having one or more similarities in one or more characteristics of the plurality of images; determine one or more color corrections for the plurality of images; estimate one or more confidence levels associated with the one or more color corrections; determine which of the one or more color corrections are qualified to be applied based on the associated one or more confidence levels; and apply the one or more qualifying color corrections to the plurality of images with a magnitude based on the associated one or more confidence levels.
 19. The system of claim 18 wherein the one or more confidence levels are based on at least one of: the one or more characteristics of the plurality of images; the one or more similarities in the one or more characteristics of the plurality of images; a plurality of factors used to determine the associated one or more color corrections; and the number of images in the plurality of images.
 20. The system of claim 18 wherein the one or more confidence levels are based on a plurality of factors used to determine the one or more color corrections, wherein one or more of the plurality of factors are weighted more than one or more other factors of the plurality of factors in the estimation of the one or more confidence levels.
 21. A computer readable storage medium having stored thereon instructions to correct image color that, when implemented by a processor, cause the processor to: obtain a plurality of images having one or more similarities in one or more characteristics of the plurality of images; determine, using a hardware processor, one or more color corrections for the plurality of images; estimate one or more confidence levels associated with the one or more color corrections; and apply the one or more color corrections to the plurality of images with a magnitude based on the associated one or more confidence levels.
 22. The computer readable medium of claim 21 wherein the one or more confidence levels are based on at least one of: the one or more characteristics of the plurality of images; the one or more similarities in the one or more characteristics of the plurality of images; a plurality of factors used to determine the associated one or more color corrections; and the number of images in the plurality of images.
 23. The computer readable medium of claim 21 wherein the instructions causing the processor to estimate the one or more confidence levels includes instructions causing the processor to estimate the one or more confidence levels based on a plurality of factors used to determine the one or more color corrections, including assigning each factor an individual confidence level and summing the individual confidence levels of the factors to obtain an overall confidence level for the one or more color corrections. 